之前幾章我們有介紹到什麼是ticks,還有如何取得ticks資料,可回去參考Day13
那這章我們來介紹什麼是Subscribe?
"Subscribe"中文為"訂閱"的意思,在Shioaji上,我們可以拿它來取得及時的報價資訊,即盤中報價。在股票的交易時間內,我們透過它去抓取每筆的成交資料,而這些資料都是即時更新的,所以每隔幾秒就會有新的資料被上傳上來。
為什要要宣告quote_callback?
因為在訂閱後,每當有一筆訂單成交時,永豐的Server就會及時傳這筆資料給我們
而quote_callback就是用來處理所回傳資料的函數
宣告quote_callback方式如下
@api.quote.on_quote
def quote_callback(topic: str, quote: dict):
print(f"Topic: {topic}, Quote: {quote}")
接著我們以"永豐金"為例,代碼為「2890」
來試著Subscribe它的ticks資料
以下為其程式碼
api.quote.subscribe(api.Contracts.Stocks["2890"], quote_type='tick')
由於沒有執行程式時,VS Code不會主動顯示輸出
所以我們要再設個時間,讓程式持續執行一段時間去抓取資料
程式碼如下
import time #引入時間
time.sleep(10) #持續執行10秒
執行結果如下
Topic: MKT/idcdmzpcr01/TSE/2890, Quote: {'AmountSum': [77407300.0], 'Close': [13.65], 'Date': '2021/10/12', 'TickType': [2], 'Time': '09:14:49.974072', 'VolSum': [5651], 'Volume': [10]}
如果想要取消訂閱的話,則是要用"Unsubscribe"
程式碼如下
api.quote.unsubscribe(api.Contracts.Stocks["2890"], quote_type='tick')